const { config } = require('../config');
const { logger } = require('../utils/logger');
const { memoryStore } = require('./memory.store');

let currentStore = memoryStore;

async function initDocumentStore() {
  if (config.dataBackend === 'postgres') {
    const { postgresStore } = require('./postgres.store');
    try {
      await postgresStore.init();
      currentStore = postgresStore;
      logger.info('Postgres document store initialized');
      return;
    } catch (error) {
      logger.error({ err: error }, 'Falling back to in-memory store due to Postgres init failure');
      currentStore = memoryStore;
    }
  }
  await currentStore.init();
  logger.info({ backend: config.dataBackend }, 'Using memory document store');
}

module.exports = {
  initDocumentStore,
  getDocumentStore: () => currentStore
};
